let mongoose = require('mongoose')
let connection = require('./connection.js')
// 定义Schema 对应的是集合或者是集合中的文档
// Schema是与数据库无关的, 并不能直接操作数据库
let UserSchema = new mongoose.Schema({
    name:String, //姓名
    // binary:Buffer,//二进制
    // living:Boolean,//是否活着
    // birthday:Date,//生日
    age:Number,//年龄
    // _id:Schema.Types.ObjectId,  //主键
    // _fk:Schema.Types.ObjectId,  //外键
    // array:[],//数组
    // arrOfString:[String],//字符串数组
    // arrOfNumber:[Number],//数字数组
    // arrOfDate:[Date],//日期数组
    // arrOfBuffer:[Buffer],//Buffer数组
    // arrOfBoolean:[Boolean],//布尔值数组
    // arrOfObjectId:[Schema.Types.ObjectId]//对象ID数组
    // nested:{ name:String} //内嵌文档
},{collection: 'User'}) // 第二个参数指定集合的名字
// console.log(UserSchema);
// Model 模型 User是模型的名字,以后都可以通过这个名字来引用这个模型
let UserModel = connection.model('User',UserSchema) // 定义一个模型
// 默认情况下,集合的名字是由Model的名字决定的,User -> 小写user -> 复数users
// child 的复数是children
// let UserModel2 = connection.model('User') // 获取一个模型
// console.log(UserModel === UserModel2);
// 返回值是一个Promise,也可以传一个回调函数
// UserModel.create({
//     name: 'sdasas',
//     age: 27
// },(err,doc) => {
//     // err错误对象，doc是保存成功后的文档对象
//     // null { _id: 5ddb8adb62cf4b46377981da, name: 'leichao', __v: 0 }
//     console.log(err,doc);
// })
// 一个实体代表一个文档对象
let user1 = new UserModel({
    name: 'wupengli',
    age:25
})
user1.save().then((doc)=>{
    console.log(doc,'doc');
})
/*
模型是一个总的概念，他代表整个集合,操作对象是整个集合
实体是一个单个的概念，它代表单个文档，只能操作自己
 */